package config

import "strings"

// KvNode 配置选项中的键值对(Key-Value)
type KvNode struct {
	key string
	val string
}

// Key 返回键值对的键
func (kv *KvNode) Key() string {
	return kv.key
}

// Val 返回键值对的值
func (kv *KvNode) Val() string {
	return kv.val
}

// SetKey 设置键值对的键
func (kv *KvNode) SetKey(key string) error {
	if strings.Trim(key, " ") == "" {
		return ErrorFooEmptyString
	}
	kv.key = key
	return nil
}

// SetVal 设置键值对的值
func (kv *KvNode) SetVal(val string) error {
	if strings.Trim(val, " ") == "" {
		return ErrorFooEmptyString
	}
	kv.val = val
	return nil
}

// NewKvNode 根据 "key = val" 创建一个键值对
func NewKvNode(kvstr string) (*KvNode, error) {
	if strings.Trim(kvstr, " ") == "" {
		return nil, ErrorFooEmptyString
	}
	kvsplit := strings.Split(kvstr, " = ")
	return &KvNode{
		key: kvsplit[0],
		val: kvsplit[1],
	}, nil
}
